package river_city_ransom.decorators;

import java.util.List;

import exceptions.ComposantError;
import river_city_ransom.services.Equipable;
import river_city_ransom.services.Gangster;
import river_city_ransom.services.GestionCombat;
import river_city_ransom.services.Objet;
import river_city_ransom.services.Personnage;
import river_city_ransom.services.PersonnageJouable;
import river_city_ransom.services.Terrain;
import river_city_ransom.types.Commande;

public class GestionCombat_D implements GestionCombat {
	private GestionCombat delegate;
	
	public GestionCombat_D(GestionCombat delegate){
		this.delegate = delegate;
	}
	
	public GestionCombat delegate(){
		return delegate;
	}
	
	@Override
	public String toString() {
		return delegate().toString();
	}
	
	/** _________________________________________________________ OBSERVATORS */
	@Override
	public Commande commandeAlex() {
		return delegate().commandeAlex();
	}

	@Override
	public Commande commandeRyan() {
		return delegate().commandeRyan();
	}
	
	@Override
	public Terrain terrain() {
		return delegate().terrain();
	}

	@Override
	public PersonnageJouable alex() {
		return delegate().alex();
	}

	@Override
	public PersonnageJouable ryan() {
		return delegate().ryan();
	}

	@Override
	public Gangster slick() {
		return delegate().slick();
	}

	@Override
	public List<Gangster> gangsters() {
		return delegate().gangsters();
	}

	@Override
	public boolean estPret() {
		return delegate().estPret();
	}

	@Override
	public boolean collision(Equipable equipable1, Equipable equipable2)
			throws ComposantError {
		return delegate().collision(equipable1, equipable2);
	}

	@Override
	public Objet collisionObjetLance(Personnage personnage, List<Objet> objets)
			throws ComposantError {
		return delegate().collisionObjetLance(personnage, objets);
	}

	@Override
	public Objet collisionObjetRamasse(Personnage personnage, List<Objet> objets)
			throws ComposantError {
		return delegate().collisionObjetRamasse(personnage, objets);
	}

	@Override
	public Personnage estFrappe(Personnage personnage) throws ComposantError {
		return delegate().estFrappe(personnage);
	}

	@Override
	public Personnage estPorte(Personnage personnage) throws ComposantError {
		return delegate().estPorte(personnage);
	}

	@Override
	public Commande commandesEnnemis() {
		return delegate().commandesEnnemis();
	}

	/** ________________________________________________________ CONSTRUCTORS */
	@Override
	public void init(Terrain t) throws ComposantError {
		delegate().init(t);
		
	}

	/** ___________________________________________________________ OPERATORS */
	@Override
	public void gerer(Commande commande1, Commande commande2)
			throws ComposantError {
		delegate().gerer(commande1, commande2);
	}

	@Override
	public void avantPasJeu() throws ComposantError {
		delegate().avantPasJeu();
		
	}

	@Override
	public void gererCommande(Personnage personnage, Commande commande)
			throws ComposantError {
		delegate().gererCommande(personnage, commande);		
	}

}
